﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Collections.Generic;

/// Espacio de nombre para los contenedores
namespace GCon
{
    /// <summary>
    /// Clase contenedora de Asignaturas
    /// </summary>
    public class Con_Asignaturas
    {
        /// <summary>
        /// Constructos por defecto
        /// </summary>
        public Con_Asignaturas()
        {
            dAsignaturas = new Dictionary<string, Con_Asignatura>();
        }

        public void ListaAsignaturas()
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Asignatura oAsignatura;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAsignaturas()";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAsignatura = new Con_Asignatura(dr["ASIGNATURA_ID_PK"].ToString(), dr["ASIGNATURA_NOMBRE"].ToString(), dr["ASIGNATURA_DESCRIPCION"].ToString(), dr["ASIGNATURA_PRECIO"].ToString());
                dAsignaturas.Add(oAsignatura.Get_ID_PK(), oAsignatura);
                oAsignatura = null;
            }

            oConexion.Close();
        }

        public void ListaAsignaturasDeCurso(String idCurso)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Asignatura oAsignatura;
            // supongo que queria esto
            List<Con_Asignatura> oAsignatures = new List<Con_Asignatura> ();
            // tambien es posible 
            Con_Asignaturas oAsignaturas = new Con_Asignaturas();

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAsignaturasDeCurso('" + idCurso + "')";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAsignatura = new Con_Asignatura();
                oAsignatura.Set_ID_PK(dr["ASIGNATURA_ID_PK"].ToString());
                oAsignatura.Set_NOMBRE(dr["ASIGNATURA_NOMBRE"].ToString());

                oAsignaturas.Add(oAsignatura.Get_ID_PK(), oAsignatura);
                oAsignatura = null;

            }

            oConexion.Close();
        }

        public void ListaAsignaturasDeProfesor(String idProfesor)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;
            Con_Asignatura oAsignatura;
            // supongo que queria esto
            List<Con_Asignatura> oAsignatures = new List<Con_Asignatura> ();
            // tambien es posible 
            Con_Asignaturas oAsignaturas = new Con_Asignaturas();

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL ListaAsignaturasDeProfesor('" + idProfesor + "')";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                oAsignatura = new Con_Asignatura();
                oAsignatura.Set_ID_PK(dr["ASIGNATURA_ID_PK"].ToString());
                oAsignatura.Set_NOMBRE(dr["ASIGNATURA_NOMBRE"].ToString());

                oAsignaturas.Add(oAsignatura.Get_ID_PK(), oAsignatura);
                oAsignatura = null;

            }

            oConexion.Close();
        }

        public Con_Asignatura GetAsignatura(String Id)
        {
            return this.dAsignaturas[Id];
        }

        public bool Add( string id , Con_Asignatura parametro)
        {
            //dAsignaturas.Contains(KeyValuePair<id, parametro>);
            return false;
        }

        public int cuenta()
        {
            return this.dAsignaturas.Count;
        }

        /// Atributos
        private Dictionary<String, Con_Asignatura> dAsignaturas;
    }
}